| @@ -50,7 +50,13 @@ class AgentsController < ApplicationController | ||
| 50 | 50 | agent.name ||= '(Untitled)' | 
| 51 | 51 |  | 
| 52 | 52 | if agent.valid? | 
| 53 | - results = agent.dry_run! | |
| 53 | + if event_payload = params[:event] | |
| 54 | +        dummy_agent = Agent.build_for_type('ManualEventAgent', current_user, name: 'Dry-Runner') | |
| 55 | + dummy_agent.readonly! | |
| 56 | + event = dummy_agent.events.build(user: current_user, payload: event_payload) | |
| 57 | + end | |
| 58 | + | |
| 59 | + results = agent.dry_run!(event) | |
| 54 | 60 |  | 
| 55 | 61 |        render json: { | 
| 56 | 62 | log: results[:log], | 
| @@ -377,6 +377,19 @@ describe AgentsController do | ||
| 377 | 377 | [users(:bob).agents.count, users(:bob).events.count, users(:bob).logs.count, agent.name, agent.updated_at] | 
| 378 | 378 | } | 
| 379 | 379 | end | 
| 380 | + | |
| 381 | + it "accepts an event" do | |
| 382 | + sign_in users(:bob) | |
| 383 | + agent = agents(:bob_website_agent) | |
| 384 | + url_from_event = "http://xkcd.com/?from_event=1".freeze | |
| 385 | +      expect { | |
| 386 | +        post :dry_run, id: agent, event: { url: url_from_event } | |
| 387 | +      }.not_to change { | |
| 388 | + [users(:bob).agents.count, users(:bob).events.count, users(:bob).logs.count, agent.name, agent.updated_at] | |
| 389 | + } | |
| 390 | + json = JSON.parse(response.body) | |
| 391 | +      expect(json['log']).to match(/^I, .* : Fetching #{Regexp.quote(url_from_event)}$/) | |
| 392 | + end | |
| 380 | 393 | end | 
| 381 | 394 |  | 
| 382 | 395 | describe "DELETE memory" do |